#pragma once

#include "gui.h"

// Cell 类，继承自 UI_Object，表示一个单元格（通常用于列表或网格中的项）
class Cell : public UI_Object
{
public:
  // 定义点击事件回调函数的类型
  typedef void (*click_event_cb_t)(void* user_data);

  // 构造函数，初始化单元格
  Cell(UI_Object* parent);

  // 析构函数，释放资源
  ~Cell();

  // 设置单元格的图片
  void set_img(const void* src);

  // 设置单元格的文本
  void set_text(const char* text);

  // 设置单元格文本的字体
  void set_font(const lv_font_t* value);

  // 设置单元格的点击事件回调函数
  void set_click_event_cb(click_event_cb_t click_event_cb, void* user_data);

private:
  UI_Object* parent = NULL;          // 父对象指针
  lv_img_dsc_t* icon = NULL;         // 图片描述符指针
  lv_obj_t* img = NULL;              // LVGL 图片对象指针
  lv_obj_t* title = NULL;            // LVGL 标签对象指针，用于显示文本
  lv_obj_t* arrow = NULL;            // LVGL 对象指针，可能用于显示箭头图标
  lv_style_t font_style;             // 字体样式
  click_event_cb_t click_event_cb = NULL;  // 点击事件回调函数指针
  void* click_event_cb_user_data = NULL;   // 点击事件回调函数的用户数据
};
// Cell::Cell(UI_Object* parent)
// {

// }


// Cell::~Cell()
// {
// }